@kubb/plugin-react-query 4.4.1 → 4.5.1

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.
Files changed (34) hide show
  1. package/dist/{components-CbVTS6aF.js → components-By3fyxDp.js} +2 -2
  2. package/dist/{components-CbVTS6aF.js.map → components-By3fyxDp.js.map} +1 -1
  3. package/dist/{components-B_-p18Ak.cjs → components-DtLglQ1w.cjs} +3 -3
  4. package/dist/{components-B_-p18Ak.cjs.map → components-DtLglQ1w.cjs.map} +1 -1
  5. package/dist/components.cjs +1 -1
  6. package/dist/components.d.cts +1 -1
  7. package/dist/components.d.ts +1 -1
  8. package/dist/components.js +1 -1
  9. package/dist/{generators-hTZEzfNP.cjs → generators-BIuKpozF.cjs} +260 -182
  10. package/dist/generators-BIuKpozF.cjs.map +1 -0
  11. package/dist/{generators-egdl4EOg.js → generators-BTb-fJYl.js} +257 -180
  12. package/dist/generators-BTb-fJYl.js.map +1 -0
  13. package/dist/generators.cjs +2 -2
  14. package/dist/generators.d.cts +5 -5
  15. package/dist/generators.d.ts +5 -5
  16. package/dist/generators.js +2 -2
  17. package/dist/index.cjs +17 -3
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +1 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +15 -3
  22. package/dist/index.js.map +1 -1
  23. package/dist/{types-CLcavQWE.d.ts → types-DgN61fGy.d.ts} +174 -182
  24. package/dist/{types-x2_6F962.d.cts → types-XOFOCTil.d.cts} +174 -182
  25. package/package.json +9 -9
  26. package/src/generators/index.ts +2 -2
  27. package/src/generators/infiniteQueryGenerator.tsx +36 -11
  28. package/src/generators/mutationGenerator.tsx +35 -10
  29. package/src/generators/queryGenerator.tsx +36 -11
  30. package/src/generators/suspenseQueryGenerator.tsx +34 -11
  31. package/src/plugin.ts +22 -1
  32. package/src/types.ts +4 -3
  33. package/dist/generators-egdl4EOg.js.map +0 -1
  34. package/dist/generators-hTZEzfNP.cjs.map +0 -1
@@ -556,170 +556,6 @@ type FileMetaBase = {
556
556
  pluginKey?: Plugin['key'];
557
557
  };
558
558
  //#endregion
559
- //#region ../plugin-oas/src/generators/createReactGenerator.d.ts
560
- type ReactGenerator<TOptions extends PluginFactoryOptions> = {
561
- name: string;
562
- type: 'react';
563
- Operations: (props: OperationsProps<TOptions>) => KubbNode;
564
- Operation: (props: OperationProps<TOptions>) => KubbNode;
565
- Schema: (props: SchemaProps$1<TOptions>) => KubbNode;
566
- };
567
- //#endregion
568
- //#region ../plugin-oas/src/generators/types.d.ts
569
- type OperationsProps<TOptions extends PluginFactoryOptions> = {
570
- /**
571
- * @deprecated
572
- */
573
- instance: Omit<OperationGenerator<TOptions>, 'build'>;
574
- options: TOptions['resolvedOptions'];
575
- operations: Array<Operation$1>;
576
- };
577
- type OperationProps<TOptions extends PluginFactoryOptions> = {
578
- /**
579
- * @deprecated
580
- */
581
- instance: Omit<OperationGenerator<TOptions>, 'build'>;
582
- options: TOptions['resolvedOptions'];
583
- operation: Operation$1;
584
- };
585
- type SchemaProps$1<TOptions extends PluginFactoryOptions> = {
586
- instance: Omit<SchemaGenerator<SchemaGeneratorOptions, TOptions>, 'build'>;
587
- options: TOptions['resolvedOptions'];
588
- schema: {
589
- name: string;
590
- tree: Array<Schema>;
591
- value: SchemaObject$1;
592
- };
593
- };
594
- type Generator<TOptions extends PluginFactoryOptions> = CoreGenerator<TOptions> | ReactGenerator<TOptions>;
595
- //#endregion
596
- //#region ../plugin-oas/src/generators/createGenerator.d.ts
597
- type CoreGenerator<TOptions extends PluginFactoryOptions> = {
598
- name: string;
599
- type: 'core';
600
- operations: (props: OperationsProps<TOptions>) => Promise<KubbFile.File[]>;
601
- operation: (props: OperationProps<TOptions>) => Promise<KubbFile.File[]>;
602
- schema: (props: SchemaProps$1<TOptions>) => Promise<KubbFile.File[]>;
603
- };
604
- //#endregion
605
- //#region ../plugin-oas/src/types.d.ts
606
- type ResolvePathOptions = {
607
- pluginKey?: Plugin['key'];
608
- group?: {
609
- tag?: string;
610
- path?: string;
611
- };
612
- type?: ResolveNameParams['type'];
613
- };
614
- /**
615
- * `propertyName` is the ref name + resolved with the nameResolver
616
- * @example import { Pet } from './Pet'
617
- *
618
- * `originalName` is the original name used(in PascalCase), only used to remove duplicates
619
- *
620
- * `pluginKey` can be used to override the current plugin being used, handy when you want to import a type/schema out of another plugin
621
- * @example import a type(plugin-ts) for a mock file(swagger-faker)
622
- */
623
- type Ref = {
624
- propertyName: string;
625
- originalName: string;
626
- path: KubbFile.OptionalPath;
627
- pluginKey?: Plugin['key'];
628
- };
629
- type Refs = Record<string, Ref>;
630
- type OperationSchema = {
631
- /**
632
- * Converted name, contains already `PathParams`, `QueryParams`, ...
633
- */
634
- name: string;
635
- schema: SchemaObject$1;
636
- operation?: Operation$1;
637
- /**
638
- * OperationName in PascalCase, only being used in OperationGenerator
639
- */
640
- operationName: string;
641
- description?: string;
642
- statusCode?: number;
643
- keys?: string[];
644
- keysToOmit?: string[];
645
- withData?: boolean;
646
- };
647
- type OperationSchemas = {
648
- pathParams?: OperationSchema & {
649
- keysToOmit?: never;
650
- };
651
- queryParams?: OperationSchema & {
652
- keysToOmit?: never;
653
- };
654
- headerParams?: OperationSchema & {
655
- keysToOmit?: never;
656
- };
657
- request?: OperationSchema;
658
- response: OperationSchema;
659
- responses: Array<OperationSchema>;
660
- statusCodes?: Array<OperationSchema>;
661
- errors?: Array<OperationSchema>;
662
- };
663
- type ByTag = {
664
- type: 'tag';
665
- pattern: string | RegExp;
666
- };
667
- type ByOperationId = {
668
- type: 'operationId';
669
- pattern: string | RegExp;
670
- };
671
- type ByPath = {
672
- type: 'path';
673
- pattern: string | RegExp;
674
- };
675
- type ByMethod = {
676
- type: 'method';
677
- pattern: HttpMethod | RegExp;
678
- };
679
- type BySchemaName = {
680
- type: 'schemaName';
681
- pattern: string | RegExp;
682
- };
683
- type ByContentType = {
684
- type: 'contentType';
685
- pattern: string | RegExp;
686
- };
687
- type Exclude$1 = ByTag | ByOperationId | ByPath | ByMethod | ByContentType;
688
- type Include = ByTag | ByOperationId | ByPath | ByMethod | ByContentType;
689
- type Override<TOptions> = (ByTag | ByOperationId | ByPath | ByMethod | BySchemaName | ByContentType) & {
690
- options: Partial<TOptions>;
691
- };
692
- //#endregion
693
- //#region ../plugin-oas/src/OperationGenerator.d.ts
694
- type Context$1<TOptions, TPluginOptions extends PluginFactoryOptions> = {
695
- fabric: Fabric;
696
- oas: Oas;
697
- exclude: Array<Exclude$1> | undefined;
698
- include: Array<Include> | undefined;
699
- override: Array<Override<TOptions>> | undefined;
700
- contentType: contentType | undefined;
701
- pluginManager: PluginManager;
702
- /**
703
- * Current plugin
704
- */
705
- plugin: Plugin<TPluginOptions>;
706
- mode: KubbFile.Mode;
707
- };
708
- declare class OperationGenerator<TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions, TFileMeta extends FileMetaBase = FileMetaBase> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context$1<TPluginOptions['resolvedOptions'], TPluginOptions>> {
709
- #private;
710
- getSchemas(operation: Operation$1, {
711
- resolveName
712
- }?: {
713
- resolveName?: (name: string) => string;
714
- }): OperationSchemas;
715
- getOperations(): Promise<Array<{
716
- path: string;
717
- method: HttpMethod;
718
- operation: Operation$1;
719
- }>>;
720
- build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>>;
721
- }
722
- //#endregion
723
559
  //#region ../plugin-oas/src/SchemaMapper.d.ts
724
560
  type SchemaKeywordMapper = {
725
561
  object: {
@@ -937,8 +773,96 @@ type Schema = {
937
773
  keyword: string;
938
774
  } | SchemaKeywordMapper[keyof SchemaKeywordMapper];
939
775
  //#endregion
776
+ //#region ../plugin-oas/src/types.d.ts
777
+ type ResolvePathOptions = {
778
+ pluginKey?: Plugin['key'];
779
+ group?: {
780
+ tag?: string;
781
+ path?: string;
782
+ };
783
+ type?: ResolveNameParams['type'];
784
+ };
785
+ /**
786
+ * `propertyName` is the ref name + resolved with the nameResolver
787
+ * @example import { Pet } from './Pet'
788
+ *
789
+ * `originalName` is the original name used(in PascalCase), only used to remove duplicates
790
+ *
791
+ * `pluginKey` can be used to override the current plugin being used, handy when you want to import a type/schema out of another plugin
792
+ * @example import a type(plugin-ts) for a mock file(swagger-faker)
793
+ */
794
+ type Ref = {
795
+ propertyName: string;
796
+ originalName: string;
797
+ path: KubbFile.OptionalPath;
798
+ pluginKey?: Plugin['key'];
799
+ };
800
+ type Refs = Record<string, Ref>;
801
+ type OperationSchema = {
802
+ /**
803
+ * Converted name, contains already `PathParams`, `QueryParams`, ...
804
+ */
805
+ name: string;
806
+ schema: SchemaObject$1;
807
+ operation?: Operation$1;
808
+ /**
809
+ * OperationName in PascalCase, only being used in OperationGenerator
810
+ */
811
+ operationName: string;
812
+ description?: string;
813
+ statusCode?: number;
814
+ keys?: string[];
815
+ keysToOmit?: string[];
816
+ withData?: boolean;
817
+ };
818
+ type OperationSchemas = {
819
+ pathParams?: OperationSchema & {
820
+ keysToOmit?: never;
821
+ };
822
+ queryParams?: OperationSchema & {
823
+ keysToOmit?: never;
824
+ };
825
+ headerParams?: OperationSchema & {
826
+ keysToOmit?: never;
827
+ };
828
+ request?: OperationSchema;
829
+ response: OperationSchema;
830
+ responses: Array<OperationSchema>;
831
+ statusCodes?: Array<OperationSchema>;
832
+ errors?: Array<OperationSchema>;
833
+ };
834
+ type ByTag = {
835
+ type: 'tag';
836
+ pattern: string | RegExp;
837
+ };
838
+ type ByOperationId = {
839
+ type: 'operationId';
840
+ pattern: string | RegExp;
841
+ };
842
+ type ByPath = {
843
+ type: 'path';
844
+ pattern: string | RegExp;
845
+ };
846
+ type ByMethod = {
847
+ type: 'method';
848
+ pattern: HttpMethod | RegExp;
849
+ };
850
+ type BySchemaName = {
851
+ type: 'schemaName';
852
+ pattern: string | RegExp;
853
+ };
854
+ type ByContentType = {
855
+ type: 'contentType';
856
+ pattern: string | RegExp;
857
+ };
858
+ type Exclude$1 = ByTag | ByOperationId | ByPath | ByMethod | ByContentType;
859
+ type Include = ByTag | ByOperationId | ByPath | ByMethod | ByContentType;
860
+ type Override<TOptions> = (ByTag | ByOperationId | ByPath | ByMethod | BySchemaName | ByContentType) & {
861
+ options: Partial<TOptions>;
862
+ };
863
+ //#endregion
940
864
  //#region ../plugin-oas/src/SchemaGenerator.d.ts
941
- type Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {
865
+ type Context$1<TOptions, TPluginOptions extends PluginFactoryOptions> = {
942
866
  fabric: Fabric;
943
867
  oas: Oas;
944
868
  pluginManager: PluginManager;
@@ -971,15 +895,15 @@ type SchemaGeneratorOptions = {
971
895
  * TODO TODO add docs
972
896
  * @beta
973
897
  */
974
- schema?: (schemaProps: SchemaProps, defaultSchemas: Schema[]) => Schema[] | undefined;
898
+ schema?: (schemaProps: SchemaProps$1, defaultSchemas: Schema[]) => Schema[] | undefined;
975
899
  };
976
900
  };
977
- type SchemaProps = {
901
+ type SchemaProps$1 = {
978
902
  schemaObject?: SchemaObject$1;
979
903
  name?: string;
980
904
  parentName?: string;
981
905
  };
982
- declare class SchemaGenerator<TOptions extends SchemaGeneratorOptions = SchemaGeneratorOptions, TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions, TFileMeta extends FileMetaBase = FileMetaBase> extends BaseGenerator<TOptions, Context<TOptions, TPluginOptions>> {
906
+ declare class SchemaGenerator<TOptions extends SchemaGeneratorOptions = SchemaGeneratorOptions, TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions, TFileMeta extends FileMetaBase = FileMetaBase> extends BaseGenerator<TOptions, Context$1<TOptions, TPluginOptions>> {
983
907
  #private;
984
908
  refs: Refs;
985
909
  /**
@@ -987,16 +911,86 @@ declare class SchemaGenerator<TOptions extends SchemaGeneratorOptions = SchemaGe
987
911
  * Delegates to getBaseTypeFromSchema internally and
988
912
  * optionally adds a union with null.
989
913
  */
990
- parse(props: SchemaProps): Schema[];
991
- deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): Array<SchemaKeywordMapper[T]>;
992
- find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
914
+ parse(props: SchemaProps$1): Schema[];
993
915
  static deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): Array<SchemaKeywordMapper[T]>;
994
- static findInObject<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
995
916
  static find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
996
917
  static combineObjects(tree: Schema[] | undefined): Schema[];
997
918
  build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>>;
998
919
  }
999
920
  //#endregion
921
+ //#region ../plugin-oas/src/generators/createGenerator.d.ts
922
+ type CoreGenerator<TOptions extends PluginFactoryOptions> = {
923
+ name: string;
924
+ type: 'core';
925
+ operations: (props: OperationsProps<TOptions>) => Promise<KubbFile.File[]>;
926
+ operation: (props: OperationProps<TOptions>) => Promise<KubbFile.File[]>;
927
+ schema: (props: SchemaProps<TOptions>) => Promise<KubbFile.File[]>;
928
+ };
929
+ //#endregion
930
+ //#region ../plugin-oas/src/generators/createReactGenerator.d.ts
931
+ type ReactGenerator<TOptions extends PluginFactoryOptions> = {
932
+ name: string;
933
+ type: 'react';
934
+ Operations: (props: OperationsProps<TOptions>) => KubbNode;
935
+ Operation: (props: OperationProps<TOptions>) => KubbNode;
936
+ Schema: (props: SchemaProps<TOptions>) => KubbNode;
937
+ };
938
+ //#endregion
939
+ //#region ../plugin-oas/src/generators/types.d.ts
940
+ type OperationsProps<TOptions extends PluginFactoryOptions> = {
941
+ config: Config;
942
+ generator: Omit<OperationGenerator<TOptions>, 'build'>;
943
+ plugin: Plugin<TOptions>;
944
+ operations: Array<Operation$1>;
945
+ };
946
+ type OperationProps<TOptions extends PluginFactoryOptions> = {
947
+ config: Config;
948
+ generator: Omit<OperationGenerator<TOptions>, 'build'>;
949
+ plugin: Plugin<TOptions>;
950
+ operation: Operation$1;
951
+ };
952
+ type SchemaProps<TOptions extends PluginFactoryOptions> = {
953
+ config: Config;
954
+ generator: Omit<SchemaGenerator<SchemaGeneratorOptions, TOptions>, 'build'>;
955
+ plugin: Plugin<TOptions>;
956
+ schema: {
957
+ name: string;
958
+ tree: Array<Schema>;
959
+ value: SchemaObject$1;
960
+ };
961
+ };
962
+ type Generator<TOptions extends PluginFactoryOptions> = CoreGenerator<TOptions> | ReactGenerator<TOptions>;
963
+ //#endregion
964
+ //#region ../plugin-oas/src/OperationGenerator.d.ts
965
+ type Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {
966
+ fabric: Fabric;
967
+ oas: Oas;
968
+ exclude: Array<Exclude$1> | undefined;
969
+ include: Array<Include> | undefined;
970
+ override: Array<Override<TOptions>> | undefined;
971
+ contentType: contentType | undefined;
972
+ pluginManager: PluginManager;
973
+ /**
974
+ * Current plugin
975
+ */
976
+ plugin: Plugin<TPluginOptions>;
977
+ mode: KubbFile.Mode;
978
+ };
979
+ declare class OperationGenerator<TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions, TFileMeta extends FileMetaBase = FileMetaBase> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {
980
+ #private;
981
+ getSchemas(operation: Operation$1, {
982
+ resolveName
983
+ }?: {
984
+ resolveName?: (name: string) => string;
985
+ }): OperationSchemas;
986
+ getOperations(): Promise<Array<{
987
+ path: string;
988
+ method: HttpMethod;
989
+ operation: Operation$1;
990
+ }>>;
991
+ build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>>;
992
+ }
993
+ //#endregion
1000
994
  //#region ../plugin-client/src/types.d.ts
1001
995
  type Options$2 = {
1002
996
  /**
@@ -1041,7 +1035,6 @@ type Options$2 = {
1041
1035
  * Path to the client import path that will be used to do the API calls.
1042
1036
  * It will be used as `import client from '${client.importPath}'`.
1043
1037
  * It allows both relative and absolute path but be aware that we will not change the path.
1044
- * @default '@kubb/plugin-client/clients/axios'
1045
1038
  */
1046
1039
  importPath?: string;
1047
1040
  /**
@@ -1082,8 +1075,8 @@ type Options$2 = {
1082
1075
  parser?: 'client' | 'zod';
1083
1076
  /**
1084
1077
  * Which client should be used to do the HTTP calls
1085
- * - 'axios' will use `@kubb/plugin-client/clients/axios` to fetch data.
1086
- * - 'fetch' will use `@kubb/plugin-client/clients/fetch` to fetch data.
1078
+ * - 'axios' will use `@kubb/plugin-client/templates/axios` to fetch data.
1079
+ * - 'fetch' will use `@kubb/plugin-client/templates/fetch` to fetch data.
1087
1080
  * @default 'axios'
1088
1081
  */
1089
1082
  client?: 'axios' | 'fetch';
@@ -1102,9 +1095,10 @@ type ResolvedOptions$1 = {
1102
1095
  output: Output<Oas>;
1103
1096
  group?: Options$2['group'];
1104
1097
  baseURL: string | undefined;
1098
+ client: Options$2['client'];
1105
1099
  parser: NonNullable<Options$2['parser']>;
1106
1100
  urlType: NonNullable<Options$2['urlType']>;
1107
- importPath: NonNullable<Options$2['importPath']>;
1101
+ importPath: Options$2['importPath'];
1108
1102
  dataReturnType: NonNullable<Options$2['dataReturnType']>;
1109
1103
  pathParamsType: NonNullable<Options$2['pathParamsType']>;
1110
1104
  paramsType: NonNullable<Options$2['paramsType']>;
@@ -1189,7 +1183,7 @@ type Options$1 = {
1189
1183
  * Group the @tanstack/query hooks based on the provided name.
1190
1184
  */
1191
1185
  group?: Group;
1192
- client?: Pick<PluginClient['options'], 'dataReturnType' | 'importPath' | 'baseURL'>;
1186
+ client?: Pick<PluginClient['options'], 'client' | 'dataReturnType' | 'importPath' | 'baseURL'>;
1193
1187
  /**
1194
1188
  * Array containing exclude parameters to exclude/skip tags/operations/methods/paths.
1195
1189
  */
@@ -1258,9 +1252,7 @@ type Options$1 = {
1258
1252
  type ResolvedOptions = {
1259
1253
  output: Output<Oas>;
1260
1254
  group: Options$1['group'];
1261
- client: Required<Omit<NonNullable<PluginReactQuery['options']['client']>, 'baseURL'>> & {
1262
- baseURL?: string;
1263
- };
1255
+ client: NonNullable<PluginReactQuery['options']['client']>;
1264
1256
  parser: Required<NonNullable<Options$1['parser']>>;
1265
1257
  pathParamsType: NonNullable<Options$1['pathParamsType']>;
1266
1258
  paramsCasing: Options$1['paramsCasing'];
@@ -1277,5 +1269,5 @@ type ResolvedOptions = {
1277
1269
  };
1278
1270
  type PluginReactQuery = PluginFactoryOptions<'plugin-react-query', Options$1, ResolvedOptions, never, ResolvePathOptions>;
1279
1271
  //#endregion
1280
- export { OperationSchemas as a, Operation$1 as c, Transformer as i, Options$1 as n, ReactGenerator as o, PluginReactQuery as r, UserPluginWithLifeCycle as s, Infinite as t };
1281
- //# sourceMappingURL=types-x2_6F962.d.cts.map
1272
+ export { ReactGenerator as a, Operation$1 as c, Transformer as i, Options$1 as n, OperationSchemas as o, PluginReactQuery as r, UserPluginWithLifeCycle as s, Infinite as t };
1273
+ //# sourceMappingURL=types-XOFOCTil.d.cts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-react-query",
3
- "version": "4.4.1",
3
+ "version": "4.5.1",
4
4
  "description": "React Query hooks generator plugin for Kubb, creating type-safe API client hooks from OpenAPI specifications for React applications.",
5
5
  "keywords": [
6
6
  "react-query",
@@ -67,18 +67,18 @@
67
67
  }
68
68
  ],
69
69
  "dependencies": {
70
- "@kubb/react-fabric": "0.2.10",
70
+ "@kubb/react-fabric": "0.2.14",
71
71
  "remeda": "^2.32.0",
72
- "@kubb/core": "4.4.1",
73
- "@kubb/oas": "4.4.1",
74
- "@kubb/plugin-client": "4.4.1",
75
- "@kubb/plugin-oas": "4.4.1",
76
- "@kubb/plugin-ts": "4.4.1",
77
- "@kubb/plugin-zod": "4.4.1"
72
+ "@kubb/core": "4.5.1",
73
+ "@kubb/oas": "4.5.1",
74
+ "@kubb/plugin-client": "4.5.1",
75
+ "@kubb/plugin-oas": "4.5.1",
76
+ "@kubb/plugin-ts": "4.5.1",
77
+ "@kubb/plugin-zod": "4.5.1"
78
78
  },
79
79
  "devDependencies": {},
80
80
  "peerDependencies": {
81
- "@kubb/react-fabric": "0.2.10"
81
+ "@kubb/react-fabric": "0.2.14"
82
82
  },
83
83
  "engines": {
84
84
  "node": ">=20"
@@ -1,4 +1,4 @@
1
- export { queryGenerator } from './queryGenerator.tsx'
2
- export { mutationGenerator } from './mutationGenerator.tsx'
3
1
  export { infiniteQueryGenerator } from './infiniteQueryGenerator.tsx'
2
+ export { mutationGenerator } from './mutationGenerator.tsx'
3
+ export { queryGenerator } from './queryGenerator.tsx'
4
4
  export { suspenseQueryGenerator } from './suspenseQueryGenerator.tsx'
@@ -1,7 +1,8 @@
1
- import { usePlugin, usePluginManager } from '@kubb/core/hooks'
1
+ import path from 'node:path'
2
+ import { usePluginManager } from '@kubb/core/hooks'
2
3
  import { pluginClientName } from '@kubb/plugin-client'
3
4
  import { Client } from '@kubb/plugin-client/components'
4
- import { createReactGenerator } from '@kubb/plugin-oas'
5
+ import { createReactGenerator } from '@kubb/plugin-oas/generators'
5
6
  import { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'
6
7
  import { getBanner, getFooter } from '@kubb/plugin-oas/utils'
7
8
  import { pluginTsName } from '@kubb/plugin-ts'
@@ -13,14 +14,15 @@ import type { PluginReactQuery } from '../types'
13
14
 
14
15
  export const infiniteQueryGenerator = createReactGenerator<PluginReactQuery>({
15
16
  name: 'react-infinite-query',
16
- Operation({ options, operation }) {
17
+ Operation({ config, operation, generator, plugin }) {
17
18
  const {
19
+ options,
18
20
  options: { output },
19
- } = usePlugin<PluginReactQuery>()
21
+ } = plugin
20
22
  const pluginManager = usePluginManager()
21
23
 
22
24
  const oas = useOas()
23
- const { getSchemas, getName, getFile } = useOperationManager()
25
+ const { getSchemas, getName, getFile } = useOperationManager(generator)
24
26
 
25
27
  const isQuery = typeof options.query === 'boolean' ? true : options.query?.methods.some((method) => operation.method === method)
26
28
  const isMutation = difference(options.mutation ? options.mutation.methods : [], options.query ? options.query.methods : []).some(
@@ -98,10 +100,33 @@ export const infiniteQueryGenerator = createReactGenerator<PluginReactQuery>({
98
100
  {options.parser === 'zod' && (
99
101
  <File.Import name={[zod.schemas.response.name, zod.schemas.request?.name].filter(Boolean)} root={query.file.path} path={zod.file.path} />
100
102
  )}
101
- {<File.Import name={'fetch'} path={options.client.importPath} />}
103
+ {options.client.importPath ? (
104
+ <>
105
+ <File.Import name={'fetch'} path={options.client.importPath} />
106
+ <File.Import name={['RequestConfig', 'ResponseErrorConfig']} path={options.client.importPath} isTypeOnly />
107
+ {options.client.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={options.client.importPath} isTypeOnly />}
108
+ </>
109
+ ) : (
110
+ <>
111
+ <File.Import name={'fetch'} root={query.file.path} path={path.resolve(config.root, config.output.path, '.kubb/fetcher.ts')} />
112
+ <File.Import
113
+ name={['RequestConfig', 'ResponseErrorConfig']}
114
+ root={query.file.path}
115
+ path={path.resolve(config.root, config.output.path, '.kubb/fetcher.ts')}
116
+ isTypeOnly
117
+ />
118
+ {options.client.dataReturnType === 'full' && (
119
+ <File.Import
120
+ name={['ResponseConfig']}
121
+ root={query.file.path}
122
+ path={path.resolve(config.root, config.output.path, '.kubb/fetcher.ts')}
123
+ isTypeOnly
124
+ />
125
+ )}
126
+ </>
127
+ )}
128
+
102
129
  {hasClientPlugin && <File.Import name={[client.name]} root={query.file.path} path={client.file.path} />}
103
- <File.Import name={['RequestConfig', 'ResponseErrorConfig']} path={options.client.importPath} isTypeOnly />
104
- {options.client.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={options.client.importPath} isTypeOnly />}
105
130
  <File.Import
106
131
  name={[
107
132
  type.schemas.request?.name,
@@ -131,7 +156,7 @@ export const infiniteQueryGenerator = createReactGenerator<PluginReactQuery>({
131
156
  operation={operation}
132
157
  typeSchemas={type.schemas}
133
158
  zodSchemas={zod.schemas}
134
- dataReturnType={options.client.dataReturnType}
159
+ dataReturnType={options.client.dataReturnType || 'data'}
135
160
  paramsCasing={options.paramsCasing}
136
161
  paramsType={options.paramsType}
137
162
  pathParamsType={options.pathParamsType}
@@ -150,7 +175,7 @@ export const infiniteQueryGenerator = createReactGenerator<PluginReactQuery>({
150
175
  paramsCasing={options.paramsCasing}
151
176
  paramsType={options.paramsType}
152
177
  pathParamsType={options.pathParamsType}
153
- dataReturnType={options.client.dataReturnType}
178
+ dataReturnType={options.client.dataReturnType || 'data'}
154
179
  cursorParam={infiniteOptions.cursorParam}
155
180
  initialPageParam={infiniteOptions.initialPageParam}
156
181
  queryParam={infiniteOptions.queryParam}
@@ -169,7 +194,7 @@ export const infiniteQueryGenerator = createReactGenerator<PluginReactQuery>({
169
194
  paramsType={options.paramsType}
170
195
  pathParamsType={options.pathParamsType}
171
196
  operation={operation}
172
- dataReturnType={options.client.dataReturnType}
197
+ dataReturnType={options.client.dataReturnType || 'data'}
173
198
  queryKeyName={queryKey.name}
174
199
  queryKeyTypeName={queryKey.typeName}
175
200
  initialPageParam={infiniteOptions.initialPageParam}
@@ -1,7 +1,8 @@
1
- import { usePlugin, usePluginManager } from '@kubb/core/hooks'
1
+ import path from 'node:path'
2
+ import { usePluginManager } from '@kubb/core/hooks'
2
3
  import { pluginClientName } from '@kubb/plugin-client'
3
4
  import { Client } from '@kubb/plugin-client/components'
4
- import { createReactGenerator } from '@kubb/plugin-oas'
5
+ import { createReactGenerator } from '@kubb/plugin-oas/generators'
5
6
  import { useOas, useOperationManager } from '@kubb/plugin-oas/hooks'
6
7
  import { getBanner, getFooter } from '@kubb/plugin-oas/utils'
7
8
  import { pluginTsName } from '@kubb/plugin-ts'
@@ -14,14 +15,15 @@ import type { PluginReactQuery } from '../types'
14
15
 
15
16
  export const mutationGenerator = createReactGenerator<PluginReactQuery>({
16
17
  name: 'react-query',
17
- Operation({ options, operation }) {
18
+ Operation({ config, plugin, operation, generator }) {
18
19
  const {
20
+ options,
19
21
  options: { output },
20
- } = usePlugin<PluginReactQuery>()
22
+ } = plugin
21
23
  const pluginManager = usePluginManager()
22
24
 
23
25
  const oas = useOas()
24
- const { getSchemas, getName, getFile } = useOperationManager()
26
+ const { getSchemas, getName, getFile } = useOperationManager(generator)
25
27
 
26
28
  const isQuery = !!options.query && options.query?.methods.some((method) => operation.method === method)
27
29
  const isMutation =
@@ -84,9 +86,32 @@ export const mutationGenerator = createReactGenerator<PluginReactQuery>({
84
86
  {options.parser === 'zod' && (
85
87
  <File.Import name={[zod.schemas.response.name, zod.schemas.request?.name].filter(Boolean)} root={mutation.file.path} path={zod.file.path} />
86
88
  )}
87
- <File.Import name={'fetch'} path={options.client.importPath} />
89
+ {options.client.importPath ? (
90
+ <>
91
+ <File.Import name={'fetch'} path={options.client.importPath} />
92
+ <File.Import name={['RequestConfig', 'ResponseErrorConfig']} path={options.client.importPath} isTypeOnly />
93
+ {options.client.dataReturnType === 'full' && <File.Import name={['ResponseConfig']} path={options.client.importPath} isTypeOnly />}
94
+ </>
95
+ ) : (
96
+ <>
97
+ <File.Import name={'fetch'} root={mutation.file.path} path={path.resolve(config.root, config.output.path, '.kubb/fetcher.ts')} />
98
+ <File.Import
99
+ name={['RequestConfig', 'ResponseErrorConfig']}
100
+ root={mutation.file.path}
101
+ path={path.resolve(config.root, config.output.path, '.kubb/fetcher.ts')}
102
+ isTypeOnly
103
+ />
104
+ {options.client.dataReturnType === 'full' && (
105
+ <File.Import
106
+ name={['ResponseConfig']}
107
+ root={mutation.file.path}
108
+ path={path.resolve(config.root, config.output.path, '.kubb/fetcher.ts')}
109
+ isTypeOnly
110
+ />
111
+ )}
112
+ </>
113
+ )}
88
114
  {!!hasClientPlugin && <File.Import name={[client.name]} root={mutation.file.path} path={client.file.path} />}
89
- <File.Import name={['RequestConfig', 'ResponseConfig', 'ResponseErrorConfig']} path={options.client.importPath} isTypeOnly />
90
115
  <File.Import
91
116
  name={[
92
117
  type.schemas.request?.name,
@@ -118,7 +143,7 @@ export const mutationGenerator = createReactGenerator<PluginReactQuery>({
118
143
  operation={operation}
119
144
  typeSchemas={type.schemas}
120
145
  zodSchemas={zod.schemas}
121
- dataReturnType={options.client.dataReturnType}
146
+ dataReturnType={options.client.dataReturnType || 'data'}
122
147
  paramsCasing={options.paramsCasing}
123
148
  paramsType={options.paramsType}
124
149
  pathParamsType={options.pathParamsType}
@@ -135,7 +160,7 @@ export const mutationGenerator = createReactGenerator<PluginReactQuery>({
135
160
  paramsCasing={options.paramsCasing}
136
161
  paramsType={options.paramsType}
137
162
  pathParamsType={options.pathParamsType}
138
- dataReturnType={options.client.dataReturnType}
163
+ dataReturnType={options.client.dataReturnType || 'data'}
139
164
  />
140
165
  {options.mutation && (
141
166
  <>
@@ -147,7 +172,7 @@ export const mutationGenerator = createReactGenerator<PluginReactQuery>({
147
172
  typeName={mutation.typeName}
148
173
  typeSchemas={type.schemas}
149
174
  operation={operation}
150
- dataReturnType={options.client.dataReturnType}
175
+ dataReturnType={options.client.dataReturnType || 'data'}
151
176
  paramsCasing={options.paramsCasing}
152
177
  pathParamsType={options.pathParamsType}
153
178
  mutationKeyName={mutationKey.name}