@kubb/plugin-faker 0.0.0-canary-20251028170426 → 0.0.0-canary-20251103132818

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.
@@ -1,5 +1,5 @@
1
- import { KubbFile } from "@kubb/fabric-core/types";
2
1
  import { Fabric, FileManager } from "@kubb/react-fabric";
2
+ import { KubbFile } from "@kubb/fabric-core/types";
3
3
  import { ConsolaInstance, LogLevel } from "consola";
4
4
  import * as OasTypes from "oas/types";
5
5
  import { HttpMethods as HttpMethod, OASDocument, SchemaObject, User } from "oas/types";
@@ -556,170 +556,6 @@ declare class Oas<const TOAS = unknown> extends BaseOas {
556
556
  valdiate(): Promise<oas_normalize_lib_types0.ValidationResult>;
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,7 +911,7 @@ 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[];
914
+ parse(props: SchemaProps$1): Schema[];
991
915
  deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): Array<SchemaKeywordMapper[T]>;
992
916
  find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined;
993
917
  static deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): Array<SchemaKeywordMapper[T]>;
@@ -997,6 +921,79 @@ declare class SchemaGenerator<TOptions extends SchemaGeneratorOptions = SchemaGe
997
921
  build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>>;
998
922
  }
999
923
  //#endregion
924
+ //#region ../plugin-oas/src/generators/createGenerator.d.ts
925
+ type CoreGenerator<TOptions extends PluginFactoryOptions> = {
926
+ name: string;
927
+ type: 'core';
928
+ operations: (props: OperationsProps<TOptions>) => Promise<KubbFile.File[]>;
929
+ operation: (props: OperationProps<TOptions>) => Promise<KubbFile.File[]>;
930
+ schema: (props: SchemaProps<TOptions>) => Promise<KubbFile.File[]>;
931
+ };
932
+ //#endregion
933
+ //#region ../plugin-oas/src/generators/createReactGenerator.d.ts
934
+ type ReactGenerator<TOptions extends PluginFactoryOptions> = {
935
+ name: string;
936
+ type: 'react';
937
+ Operations: (props: OperationsProps<TOptions>) => KubbNode;
938
+ Operation: (props: OperationProps<TOptions>) => KubbNode;
939
+ Schema: (props: SchemaProps<TOptions>) => KubbNode;
940
+ };
941
+ //#endregion
942
+ //#region ../plugin-oas/src/generators/types.d.ts
943
+ type OperationsProps<TOptions extends PluginFactoryOptions> = {
944
+ config: Config;
945
+ generator: Omit<OperationGenerator<TOptions>, 'build'>;
946
+ plugin: Plugin<TOptions>;
947
+ operations: Array<Operation$1>;
948
+ };
949
+ type OperationProps<TOptions extends PluginFactoryOptions> = {
950
+ config: Config;
951
+ generator: Omit<OperationGenerator<TOptions>, 'build'>;
952
+ plugin: Plugin<TOptions>;
953
+ operation: Operation$1;
954
+ };
955
+ type SchemaProps<TOptions extends PluginFactoryOptions> = {
956
+ config: Config;
957
+ generator: Omit<SchemaGenerator<SchemaGeneratorOptions, TOptions>, 'build'>;
958
+ plugin: Plugin<TOptions>;
959
+ schema: {
960
+ name: string;
961
+ tree: Array<Schema>;
962
+ value: SchemaObject$1;
963
+ };
964
+ };
965
+ type Generator<TOptions extends PluginFactoryOptions> = CoreGenerator<TOptions> | ReactGenerator<TOptions>;
966
+ //#endregion
967
+ //#region ../plugin-oas/src/OperationGenerator.d.ts
968
+ type Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {
969
+ fabric: Fabric;
970
+ oas: Oas;
971
+ exclude: Array<Exclude$1> | undefined;
972
+ include: Array<Include> | undefined;
973
+ override: Array<Override<TOptions>> | undefined;
974
+ contentType: contentType | undefined;
975
+ pluginManager: PluginManager;
976
+ /**
977
+ * Current plugin
978
+ */
979
+ plugin: Plugin<TPluginOptions>;
980
+ mode: KubbFile.Mode;
981
+ };
982
+ declare class OperationGenerator<TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions, TFileMeta extends FileMetaBase = FileMetaBase> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {
983
+ #private;
984
+ getSchemas(operation: Operation$1, {
985
+ resolveName
986
+ }?: {
987
+ resolveName?: (name: string) => string;
988
+ }): OperationSchemas;
989
+ getOperations(): Promise<Array<{
990
+ path: string;
991
+ method: HttpMethod;
992
+ operation: Operation$1;
993
+ }>>;
994
+ build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>>;
995
+ }
996
+ //#endregion
1000
997
  //#region src/types.d.ts
1001
998
  type Options$1 = {
1002
999
  /**
@@ -1100,5 +1097,5 @@ type ResolvedOptions = {
1100
1097
  };
1101
1098
  type PluginFaker = PluginFactoryOptions<'plugin-faker', Options$1, ResolvedOptions, never, ResolvePathOptions>;
1102
1099
  //#endregion
1103
- export { UserPluginWithLifeCycle as a, ReactGenerator as i, PluginFaker as n, Schema as r, Options$1 as t };
1104
- //# sourceMappingURL=types-DRMQqYat.d.cts.map
1100
+ export { UserPluginWithLifeCycle as a, Schema as i, PluginFaker as n, ReactGenerator as r, Options$1 as t };
1101
+ //# sourceMappingURL=types-DVlTgbM8.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/plugin-faker",
3
- "version": "0.0.0-canary-20251028170426",
3
+ "version": "0.0.0-canary-20251103132818",
4
4
  "description": "Faker.js data generator plugin for Kubb, creating realistic mock data from OpenAPI specifications for development and testing.",
5
5
  "keywords": [
6
6
  "faker",
@@ -68,17 +68,17 @@
68
68
  }
69
69
  ],
70
70
  "dependencies": {
71
- "@kubb/react-fabric": "0.2.10",
72
- "@kubb/core": "0.0.0-canary-20251028170426",
73
- "@kubb/oas": "0.0.0-canary-20251028170426",
74
- "@kubb/plugin-oas": "0.0.0-canary-20251028170426",
75
- "@kubb/plugin-ts": "0.0.0-canary-20251028170426"
71
+ "@kubb/react-fabric": "0.2.14",
72
+ "@kubb/core": "0.0.0-canary-20251103132818",
73
+ "@kubb/oas": "0.0.0-canary-20251103132818",
74
+ "@kubb/plugin-oas": "0.0.0-canary-20251103132818",
75
+ "@kubb/plugin-ts": "0.0.0-canary-20251103132818"
76
76
  },
77
77
  "devDependencies": {
78
- "@kubb/plugin-oas": "0.0.0-canary-20251028170426"
78
+ "@kubb/plugin-oas": "0.0.0-canary-20251103132818"
79
79
  },
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,30 +1,31 @@
1
- import { useMode, usePlugin, usePluginManager } from '@kubb/core/hooks'
2
- import { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'
3
- import { Oas } from '@kubb/plugin-oas/components'
1
+ import { useMode, usePluginManager } from '@kubb/core/hooks'
2
+ import { type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'
3
+ import { createReactGenerator } from '@kubb/plugin-oas/generators'
4
4
  import { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'
5
5
  import { getBanner, getFooter } from '@kubb/plugin-oas/utils'
6
6
  import { pluginTsName } from '@kubb/plugin-ts'
7
- import { File } from '@kubb/react-fabric'
7
+ import { File, Fragment } from '@kubb/react-fabric'
8
8
  import { Faker } from '../components'
9
9
  import type { PluginFaker } from '../types'
10
10
 
11
11
  export const fakerGenerator = createReactGenerator<PluginFaker>({
12
12
  name: 'faker',
13
- Operation({ operation, options, instance }) {
14
- const { dateParser, regexGenerator, seed, mapper } = options
15
-
16
- const plugin = usePlugin<PluginFaker>()
13
+ Operation({ operation, generator, plugin }) {
14
+ const {
15
+ options,
16
+ options: { dateParser, regexGenerator, seed, mapper },
17
+ } = plugin
17
18
  const mode = useMode()
18
19
  const pluginManager = usePluginManager()
19
20
 
20
21
  const oas = useOas()
21
- const { getSchemas, getFile, getGroup } = useOperationManager()
22
+ const { getSchemas, getFile, getGroup } = useOperationManager(generator)
22
23
  const schemaManager = useSchemaManager()
23
24
 
24
25
  const file = getFile(operation)
25
26
  const schemas = getSchemas(operation)
26
27
  const schemaGenerator = new SchemaGenerator(options, {
27
- fabric: instance.context.fabric,
28
+ fabric: generator.context.fabric,
28
29
  oas,
29
30
  plugin,
30
31
  pluginManager,
@@ -36,7 +37,7 @@ export const fakerGenerator = createReactGenerator<PluginFaker>({
36
37
  .flat()
37
38
  .filter(Boolean)
38
39
 
39
- const mapOperationSchema = ({ name, schema: schemaObject, description, ...options }: OperationSchemaType, i: number) => {
40
+ const mapOperationSchema = ({ name, schema: schemaObject, description, ...options }: OperationSchemaType) => {
40
41
  const tree = schemaGenerator.parse({ schemaObject, name })
41
42
  const imports = schemaManager.getImports(tree)
42
43
  const group = options.operation ? getGroup(options.operation) : undefined
@@ -61,7 +62,7 @@ export const fakerGenerator = createReactGenerator<PluginFaker>({
61
62
  )
62
63
 
63
64
  return (
64
- <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>
65
+ <Fragment>
65
66
  {canOverride && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}
66
67
  {imports.map((imp) => (
67
68
  <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />
@@ -77,7 +78,7 @@ export const fakerGenerator = createReactGenerator<PluginFaker>({
77
78
  seed={seed}
78
79
  canOverride={canOverride}
79
80
  />
80
- </Oas.Schema>
81
+ </Fragment>
81
82
  )
82
83
  }
83
84
 
@@ -96,13 +97,11 @@ export const fakerGenerator = createReactGenerator<PluginFaker>({
96
97
  </File>
97
98
  )
98
99
  },
99
- Schema({ schema, options }) {
100
- const { dateParser, regexGenerator, seed, mapper } = options
101
-
100
+ Schema({ schema, plugin }) {
102
101
  const { getName, getFile, getImports } = useSchemaManager()
103
102
  const {
104
- options: { output },
105
- } = usePlugin<PluginFaker>()
103
+ options: { output, dateParser, regexGenerator, seed, mapper },
104
+ } = plugin
106
105
  const pluginManager = usePluginManager()
107
106
  const oas = useOas()
108
107
  const imports = getImports(schema.tree)
package/src/types.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import type { Group, Output, PluginFactoryOptions, ResolveNameParams } from '@kubb/core'
2
2
 
3
3
  import type { contentType, Oas, SchemaObject } from '@kubb/oas'
4
- import type { Exclude, Generator, Include, Override, ResolvePathOptions, Schema } from '@kubb/plugin-oas'
4
+ import type { Exclude, Include, Override, ResolvePathOptions, Schema } from '@kubb/plugin-oas'
5
+ import type { Generator } from '@kubb/plugin-oas/generators'
5
6
 
6
7
  export type Options = {
7
8
  /**
@@ -1 +0,0 @@
1
- {"version":3,"file":"fakerGenerator-6YTX8ENZ.cjs","names":["SchemaGenerator","options","pluginTsName","schemaKeywords","Oas","File","Faker"],"sources":["../src/generators/fakerGenerator.tsx"],"sourcesContent":["import { useMode, usePlugin, usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File } from '@kubb/react-fabric'\nimport { Faker } from '../components'\nimport type { PluginFaker } from '../types'\n\nexport const fakerGenerator = createReactGenerator<PluginFaker>({\n name: 'faker',\n Operation({ operation, options, instance }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const plugin = usePlugin<PluginFaker>()\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: instance.context.fabric,\n oas,\n plugin,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaObject, description, ...options }: OperationSchemaType, i: number) => {\n const tree = schemaGenerator.parse({ schemaObject, name })\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const faker = {\n name: schemaManager.getName(name, { type: 'function' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, { type: 'type', pluginKey: [pluginTsName] }),\n file: schemaManager.getFile(options.operationName || name, { pluginKey: [pluginTsName], group }),\n }\n\n const canOverride = tree.some(\n ({ keyword }) =>\n keyword === schemaKeywords.array ||\n keyword === schemaKeywords.and ||\n keyword === schemaKeywords.object ||\n keyword === schemaKeywords.union ||\n keyword === schemaKeywords.tuple,\n )\n\n return (\n <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\n {canOverride && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Faker\n name={faker.name}\n typeName={type.name}\n description={description}\n tree={tree}\n regexGenerator={regexGenerator}\n dateParser={dateParser}\n mapper={mapper}\n seed={seed}\n canOverride={canOverride}\n />\n </Oas.Schema>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ schema, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output },\n } = usePlugin<PluginFaker>()\n const pluginManager = usePluginManager()\n const oas = useOas()\n const imports = getImports(schema.tree)\n\n const faker = {\n name: getName(schema.name, { type: 'function' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n const canOverride = schema.tree.some(\n ({ keyword }) =>\n keyword === schemaKeywords.array ||\n keyword === schemaKeywords.and ||\n keyword === schemaKeywords.object ||\n keyword === schemaKeywords.union ||\n keyword === schemaKeywords.tuple ||\n keyword === schemaKeywords.string ||\n keyword === schemaKeywords.integer ||\n keyword === schemaKeywords.number,\n )\n\n return (\n <File\n baseName={faker.file.baseName}\n path={faker.file.path}\n meta={faker.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}\n <File.Import isTypeOnly root={faker.file.path} path={type.file.path} name={[type.name]} />\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={faker.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Faker\n name={faker.name}\n typeName={type.name}\n description={schema.value.description}\n tree={schema.tree}\n regexGenerator={regexGenerator}\n dateParser={dateParser}\n mapper={mapper}\n seed={seed}\n canOverride={canOverride}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fakerGenerator-D3zaPh1_.js","names":["options"],"sources":["../src/generators/fakerGenerator.tsx"],"sourcesContent":["import { useMode, usePlugin, usePluginManager } from '@kubb/core/hooks'\nimport { createReactGenerator, type OperationSchema as OperationSchemaType, SchemaGenerator, schemaKeywords } from '@kubb/plugin-oas'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport { useOas, useOperationManager, useSchemaManager } from '@kubb/plugin-oas/hooks'\nimport { getBanner, getFooter } from '@kubb/plugin-oas/utils'\nimport { pluginTsName } from '@kubb/plugin-ts'\nimport { File } from '@kubb/react-fabric'\nimport { Faker } from '../components'\nimport type { PluginFaker } from '../types'\n\nexport const fakerGenerator = createReactGenerator<PluginFaker>({\n name: 'faker',\n Operation({ operation, options, instance }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const plugin = usePlugin<PluginFaker>()\n const mode = useMode()\n const pluginManager = usePluginManager()\n\n const oas = useOas()\n const { getSchemas, getFile, getGroup } = useOperationManager()\n const schemaManager = useSchemaManager()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const schemaGenerator = new SchemaGenerator(options, {\n fabric: instance.context.fabric,\n oas,\n plugin,\n pluginManager,\n mode,\n override: options.override,\n })\n\n const operationSchemas = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response]\n .flat()\n .filter(Boolean)\n\n const mapOperationSchema = ({ name, schema: schemaObject, description, ...options }: OperationSchemaType, i: number) => {\n const tree = schemaGenerator.parse({ schemaObject, name })\n const imports = schemaManager.getImports(tree)\n const group = options.operation ? getGroup(options.operation) : undefined\n\n const faker = {\n name: schemaManager.getName(name, { type: 'function' }),\n file: schemaManager.getFile(name),\n }\n\n const type = {\n name: schemaManager.getName(name, { type: 'type', pluginKey: [pluginTsName] }),\n file: schemaManager.getFile(options.operationName || name, { pluginKey: [pluginTsName], group }),\n }\n\n const canOverride = tree.some(\n ({ keyword }) =>\n keyword === schemaKeywords.array ||\n keyword === schemaKeywords.and ||\n keyword === schemaKeywords.object ||\n keyword === schemaKeywords.union ||\n keyword === schemaKeywords.tuple,\n )\n\n return (\n <Oas.Schema key={i} name={name} schemaObject={schemaObject} tree={tree}>\n {canOverride && <File.Import isTypeOnly root={file.path} path={type.file.path} name={[type.name]} />}\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} />\n ))}\n <Faker\n name={faker.name}\n typeName={type.name}\n description={description}\n tree={tree}\n regexGenerator={regexGenerator}\n dateParser={dateParser}\n mapper={mapper}\n seed={seed}\n canOverride={canOverride}\n />\n </Oas.Schema>\n )\n }\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={getBanner({ oas, output: plugin.options.output, config: pluginManager.config })}\n footer={getFooter({ oas, output: plugin.options.output })}\n >\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}\n {operationSchemas.map(mapOperationSchema)}\n </File>\n )\n },\n Schema({ schema, options }) {\n const { dateParser, regexGenerator, seed, mapper } = options\n\n const { getName, getFile, getImports } = useSchemaManager()\n const {\n options: { output },\n } = usePlugin<PluginFaker>()\n const pluginManager = usePluginManager()\n const oas = useOas()\n const imports = getImports(schema.tree)\n\n const faker = {\n name: getName(schema.name, { type: 'function' }),\n file: getFile(schema.name),\n }\n\n const type = {\n name: getName(schema.name, { type: 'type', pluginKey: [pluginTsName] }),\n file: getFile(schema.name, { pluginKey: [pluginTsName] }),\n }\n\n const canOverride = schema.tree.some(\n ({ keyword }) =>\n keyword === schemaKeywords.array ||\n keyword === schemaKeywords.and ||\n keyword === schemaKeywords.object ||\n keyword === schemaKeywords.union ||\n keyword === schemaKeywords.tuple ||\n keyword === schemaKeywords.string ||\n keyword === schemaKeywords.integer ||\n keyword === schemaKeywords.number,\n )\n\n return (\n <File\n baseName={faker.file.baseName}\n path={faker.file.path}\n meta={faker.file.meta}\n banner={getBanner({ oas, output, config: pluginManager.config })}\n footer={getFooter({ oas, output })}\n >\n <File.Import name={['faker']} path=\"@faker-js/faker\" />\n {regexGenerator === 'randexp' && <File.Import name={'RandExp'} path={'randexp'} />}\n {dateParser !== 'faker' && <File.Import path={dateParser} name={dateParser} />}\n <File.Import isTypeOnly root={faker.file.path} path={type.file.path} name={[type.name]} />\n {imports.map((imp) => (\n <File.Import key={[imp.path, imp.name, imp.isTypeOnly].join('-')} root={faker.file.path} path={imp.path} name={imp.name} />\n ))}\n\n <Faker\n name={faker.name}\n typeName={type.name}\n description={schema.value.description}\n tree={schema.tree}\n regexGenerator={regexGenerator}\n dateParser={dateParser}\n mapper={mapper}\n seed={seed}\n canOverride={canOverride}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}